home *** CD-ROM | disk | FTP | other *** search
/ Die Speccy' 97 / Die Speccy' 97.iso / amiga_system / the_aminet / comm / bbs / amms20d.lha / amms / mbbatch / com / zconnect_Client < prev    next >
Text File  |  1995-08-21  |  10KB  |  332 lines

  1. ;    ZConnect-Client
  2. ;
  3. ;    Scriptfile zum Austausch neuer Nachrichten im ZConnect-Format als
  4. ;    CALLER
  5. ;
  6. ;    $VER: 1.00 / 13.08.1995
  7. ;
  8. ;    Beschreibung :
  9. ;    Diese Batchdatei wird beim Anrufen der Server-Box von der
  10. ;    anrufenden Mailbox ausgefuehrt.
  11. ;    Das Passwort fuer den LOGIN in die andere Box muss im File
  12. ;    MBDAT:BOXNAME.PW stehen, wobei BOXNAME = Name der angerufenden
  13. ;    Box ist.
  14. ;    Stehen im Directory MBNET:EXPORT/ die Dateien <USERNAME>.LHA,
  15. ;    <USERNAME>.MSGNR und <USERNAME>.PMNR, so werden nicht die neusten
  16. ;    Nachrichten und Files aktuell exportiert und gepackt, sondern diese
  17. ;    vorgepackten Daten benutzt.
  18. ;    Existiert der Port IMPORT, so wird der Import durch einen Event
  19. ;    auf diesen Port umgelenkt.
  20. ;    Wird diese Batch auf dem Port IMPORT ausgefuehrt, so werden nur
  21. ;    Daten aus dem Directory mbnet:Import/ importiert.
  22. ;
  23. ;    Das Script sollte so eingebunden werden, dass es ueber Flags
  24. ;    auf die folgende Befehle zugreifen kann !
  25. ;
  26. ;    ADD EVENT
  27. ;    CHECK FILE
  28. ;    DISK DOWNLOAD
  29. ;    DISK EXECUTE
  30. ;    DISK UPLOAD
  31. ;    ECHO
  32. ;    EXTERN
  33. ;    FASTNET GETFILE
  34. ;    GOTO
  35. ;    HANGUP
  36. ;    IF
  37. ;    LOGOUT        <-- Option /FAST muss unterstuetzt werden !
  38. ;    ON ERROR
  39. ;    ON HANGUP
  40. ;    ZCONNECT GETFILE
  41. ;    ZCONNECT MAKEFILE
  42. ;    WAIT
  43. ;
  44. ;    Folgende Amiga-Dos-Befehle werden benutzt :
  45. ;
  46. ;    COPY
  47. ;    DELETE
  48. ;    LIST
  49. ;    SORT
  50. ;
  51. ;    Einrichtung eines Netcalls fuer eine Netzbox (Node) :
  52. ;    USERNAME : Name der anrufenden Node (z.B. TBA)
  53. ;    STRASSE  : @NETCALL
  54. ;    STADT     : Name der Domain (z.B. Fastnet.de)
  55. ;
  56. ;    Einrichtung eines LocalGates fuer die Einbindung eines anderen
  57. ;    lokalen Netzwerks :
  58. ;    USERNAME : Name der anrufenden Node (z.B. TBA)
  59. ;    VORNAME  : Gatename im Fastnet (z.B. Z-Netz)
  60. ;    STRASSE  : @LOCALGATE
  61. ;    STADT     : Name der Domain (z.B. Z-Netz.de)
  62. ;
  63. ;    Einrichtung eines Gates fuer die Einbindung eines anderen
  64. ;    globalen Netzwerks :
  65. ;    USERNAME : Name der anrufenden Node (z.B. TBA)
  66. ;    VORNAME  : Gatename im Fastnet (z.B. Z-Netz)
  67. ;    NACHNAME : Gatename im Zerberus-Netz (z.B. Fastnet)
  68. ;    STRASSE  : @GATE
  69. ;    STADT     : Name der Domain (z.B. Z-Netz.de)
  70. ;
  71. ;    Wenn hinter der anrufenden Node noch weitere Nodes haengen,
  72. ;    die ebenfalls das Netz empfangen, so muss die Datei
  73. ;    MBDAT:NODENAME.NODES eingerichtet werden
  74. ;    (NODENAME = Name der anrufenden Node).
  75. ;    In dieser Datei muessen die anrufende Node und die Nodes stehen,
  76. ;    die ueber sie zu erreichen sind.
  77. ;    Der Aufbau dieses Files ist im Kapitel Systemnachrichten/Nodeliste
  78. ;    der Fastnet-Format-Guide nachzulesen. Die Datei muss einer normalen
  79. ;    Nodelisten-Systemnachricht entsprechen, als Datum darf der Wert 0
  80. ;    angegeben werden, er entspricht immer dem akt. Tag.
  81. ;
  82. ;    Konstanten :
  83. ;
  84. ;DEBUG    ="ON"                    ; Rette empfangenes Pointfile
  85. DEBUGDIR  = "AMMS:NETDEBUG/"            ; Debug-Directory
  86. IMPORTPORT= "IMPORT"                ; Portname fuer Import
  87. TMPDIR    = "mbmsg:point/'{port}'/"        ; Dir fuer Tmp-Files
  88. EXPORTDIR = "mbnet:Export/"            ; Export-Directory
  89. IMPORTDIR = "mbnet:Import/"            ; Import-Directory
  90. EXFTABDIR = "mbnet:ExportFTab/"            ; Export-FTab-Directory
  91. IMFTABDIR = "mbnet:ImportFTab/"            ; Import-FTab-Directory
  92. MAXMSGLEN = 2000                ; Max. Laenge der Msgs in KByte
  93. MAXPMLEN  = 2000                ; Max. Laenge der PMs in KByte
  94. MSGFILE   = "'{CALLS}'.BRT"            ; Oeff. Nachrichten
  95. PMFILE    = "'{CALLS}'.PRV"            ; Private Nachrichten
  96. MSGNRFILE = "msgnr"                ; File fuer Msg-Nummern
  97. PMNRFILE  = "pmnr"                ; File fuer PM-Nummern
  98. COPYFILE  = "'{NAME}'@ZC.lha"            ; Vorgabefile (Pack-Event)
  99. COPYMSGNR = "'{NAME}'@ZC.msgnr"            ; File fuer Msg-Nummern
  100. COPYPMNR  = "'{NAME}'@ZC.pmnr"            ; File fuer PM-Nummern
  101. PCKFILE   = "caller.lzh"            ; Name des gepackten Files
  102. RECFILE   = "called.lha"            ; Name des empfangenen Files
  103. TBOXDIR   = "mbdat:"                ; Dir fuer Fastnet-Nodefile
  104. IMPORTFILE= "'IMPORTDIR''{NAME}'@'ZC{CALLNR}'.LHA" ; Importfile fuer anderen Port
  105. PACKER    = "lha -P-1 m ""'TMPDIR''PCKFILE'"" ""'TMPDIR''PMFILE'"" ""'TMPDIR''MSGFILE'"""
  106.                         ; Packen
  107. UPACKER   = "lha -P-1 e ""'TMPDIR''RECFILE'"" ""'TMPDIR'"" ""~(#?/#?|#?:#?)"""
  108.                         ; Entpacken
  109. LISTFILES = "'IMPORTDIR''{NAME}'@ZC#?"        ; Importfile
  110. SERNR     = "^A^A^A^A^D"            ; Seriennummer 1,1,1,1,4
  111.  
  112. ;
  113. ;    Domainname holen
  114. ;
  115. _on error ERROR                    ; Im Fehlerfall ...
  116. DOMAIN={CITY}                    ; Domainname holen
  117.  
  118. ;
  119. ;    Pruefe auf normalen Netcall
  120. ;
  121.  
  122. _if {STREET} != "@NETCALL" then _goto LOCALGATE
  123. FIL=16+128+256+512+32768
  124. OP_GET="/Type=0/Filter='FIL'/Cache=512/Header=96" ; Setze Optionen
  125. FIL=1+4+16+32+64
  126. OP_MAKEPM="/Type=0/Filter='FIL'"
  127. FIL=2+8+16+32+64
  128. OP_MAKEMSG="/Type=0/Filter='FIL'"
  129. _goto START
  130.  
  131. ;
  132. ;    Pruefe auf LocalGate
  133. ;
  134. LOCALGATE:
  135. _if {STREET} != "@LOCALGATE" then _goto GATE
  136. FIL=16+128+256+512+32768+262144
  137. OP_GET="/Type=2/Filter='FIL'/Cache=512/Header=96" ; Setze Optionen
  138. FIL=1+4+16+32+64
  139. OP_MAKEPM="/Type=2/Filter='FIL'"
  140. FIL=2+8+16+32+64
  141. OP_MAKEMSG="/Type=2/Filter='FIL'"
  142. _goto START
  143.  
  144. ;
  145. ;    Pruefe auf Gate
  146. ;
  147. GATE:
  148. _if {STREET} != "@GATE" then _goto USERPOINT
  149. FIL=16+128+256+512+32768
  150. OP_GET="/Type=1/Filter='FIL'/Cache=512/Header=96" ; Setze Optionen
  151. FIL=1+4+16+32+64
  152. OP_MAKEPM="/Type=1/Filter='FIL'"
  153. FIL=2+8+16+32+64
  154. OP_MAKEMSG="/Type=1/Filter='FIL'"
  155. _goto START
  156.  
  157. ;
  158. ;    User-Point
  159. ;
  160. USERPOINT:
  161. FIL=16+128+256+512
  162. OP_GET="/Type=3/Filter='FIL'/Cache=128/Header=48" ; Setze Optionen
  163. FIL=1+4+16+32+64
  164. OP_MAKEPM="/Type=3/Filter='FIL'"
  165. FIL=2+4+8+16+32+64
  166. OP_MAKEMSG="/Type=3/Filter='FIL'"
  167. DOMAIN="ZER"                    ; Domain ZER setzen
  168.  
  169. ;
  170. ;    Filebrett-Konverter-Files einbinden
  171. ;
  172. START:
  173. _check file "'EXFTABDIR''{NAME}'" NOEXPORTCVT
  174. OP_MAKEMSG="'OP_MAKEMSG'/FBoardlist=""'EXFTABDIR''{NAME}'"""
  175. NOEXPORTCVT:
  176. _check file "'IMFTABDIR''{NAME}'" NOIMPORTCVT
  177. OP_GET="'OP_GET'/FBoardlist=*""'IMFTABDIR''{NAME}'*"""
  178. NOIMPORTCVT:
  179.  
  180. ;
  181. ;    Login in der anderen Box
  182. ;
  183.  
  184. _echo/nolf/raw "^X^C^X^C^X^C^X^C^X^C"        ; Intro abbrechen
  185.  
  186. TRIES=0
  187. LOGIN_LOOP:
  188. TRIES=TRIES+1                    ; Versuchsanzahl + 1
  189. _if/i TRIES > 3 then _goto ERROR        ; Wenn 4., Fehler
  190. _waitstring "Username:" 60 LOGIN_TIMEOUT    ; 60s auf Username: warten
  191. _echo/nolf/raw "JANUS^M"            ; Username schicken
  192. _waitstring "Systemname:" 30 LOGIN_TIMEOUT    ; 30s auf Systemname: warten
  193. _echo/nolf/raw "'{sysname}'^M"            ; Boxname schicken
  194. _waitstring "Passwort:" 30 LOGIN_TIMEOUT    ; 30s auf Passwort: warten
  195. _disk text "mbdat:'{name}'.PW"            ; PW schicken
  196. _echo/nolf/raw "^M"
  197. _waitstring "running arc" 30 LOGIN_TIMEOUT    ; 30s auf running arc warten
  198. _goto LOGIN_OK                    ; Login OK
  199.  
  200. LOGIN_TIMEOUT:
  201. _echo/nolf/raw "^X^C^X^C^X^C^X^C^X^C^M^M^M^M^M"" ; neu synchronisieren
  202. _goto LOGIN_LOOP
  203.  
  204. ;
  205. ;    Login okay ... Loesche alte Files / Rename, wenn File immer noch geoeffnet
  206. ;
  207. LOGIN_OK:
  208. _if TMPDIR != "" then _extern/q delete "'TMPDIR'#?"
  209. _extern/q rename "'TMPDIR''PCKFILE'" "'TMPDIR''PCKFILE''{CALLNR}'"
  210. _extern/q rename "'TMPDIR''RECFILE'" "'TMPDIR''RECFILE''{CALLNR}'"
  211.  
  212. ;
  213. ;    Neue Nachrichten fuer andere Box sammeln & packen
  214. ;
  215.  
  216. COPYSTAT=0                    ; Kopier-Status auf FALSE
  217. _check file "'EXPORTDIR''COPYPMNR'" EXPORT    ; Existiert Sendefile ?
  218. _extern/q copy "'EXPORTDIR''COPYFILE'" "'TMPDIR''PCKFILE'"    ; Ja, vorgepackte
  219. _extern/q copy "'EXPORTDIR''COPYMSGNR'" "'TMPDIR''MSGNRFILE'" ; Files benutzen
  220. _extern/q copy "'EXPORTDIR''COPYPMNR'" "'TMPDIR''PMNRFILE'"
  221. _check file "'TMPDIR''PMNRFILE'" DELETE        ; Alle Daten korrekt kopiert ?
  222. _check file "'TMPDIR''MSGNRFILE'" DELETE    ; Wenn Nein, verzw.
  223. _check file "'TMPDIR''PCKNRFILE'" DELETE
  224. COPYSTAT=1                    ; Kopier-Status auf TRUE
  225. _goto HANDSHAKE                    ; Ja -> Warten auf Handshake
  226.  
  227. ;    Schon kopierte Daten aus TMP-Directory loeschen
  228.  
  229. DELETE:
  230. _if TMPDIR != "" then _extern/q delete "'TMPDIR'#?" ; Nein, kopierte Daten loeschen
  231.  
  232. ;    PMs und Messages exportieren
  233.  
  234. EXPORT:
  235. _on error/ignore
  236. _zconnect makefile'OP_MAKEPM' "'TMPDIR''PMFILE'" 'MAXPMLEN' "'TMPDIR''PMNRFILE'" "'DOMAIN'"
  237. _zconnect makefile'OP_MAKEMSG' "'TMPDIR''MSGFILE'" 'MAXMSGLEN' "'TMPDIR''MSGNRFILE'" "'DOMAIN'"
  238. _on error ERROR
  239.  
  240. ;    Messages packen
  241.  
  242. _extern/q 'PACKER'
  243.  
  244. ;
  245. ;    Handshaking senden
  246. ;
  247. HANDSHAKE:
  248. _waitstring "^U"                ; Auf NAK warten
  249. ACK_LOOP:
  250. _echo/nolf/raw SERNR                ; Seriennummer senden
  251. _menu "" "^F" ACK_OK "^U" ACK_LOOP
  252. ACK_OK:
  253.  
  254. ;
  255. ;    Messages uploaden und downloaden
  256. ;
  257.  
  258. _on hangup/ignore                ; Auch weiter, wenn aufgelegt
  259. _disk download "'TMPDIR''PCKFILE'"        ; Unsere Nachrichten schicken
  260. _disk upload "'TMPDIR''RECFILE'"        ; File von Box empfangen
  261.  
  262. ;
  263. ;    Auflegen nach 3 Sekunden
  264. ;
  265.  
  266. _on error/ignore                ; Alle Fehler ignorieren
  267. _wait 3                        ; 3 Sekunden warten
  268. _hangup                        ; Modem auflegen
  269.  
  270. ;
  271. ;    Wenn Files vorgepackt abgeholt, dann vorgepackte Daten loeschen
  272. ;
  273.  
  274. _if/i COPYSTAT == 1 then _extern/q delete "'EXPORTDIR''COPYPMNR'" "'EXPORTDIR''COPYFILE'" "'EXPORTDIR''COPYMSGNR'"
  275.  
  276. ;
  277. ;    Geschickte Messages und PMs als gelesen markieren
  278. ;
  279.  
  280. _zconnect makefile/setnr "'TMPDIR''MSGNRFILE'"    ; Gezogene Msgs = alte Msgs
  281. _zconnect makefile/setnr "'TMPDIR''PMNRFILE'"    ; Gezogene PMs = alte PMs
  282.  
  283. ;
  284. ;    Nicht mehr benoetigte Files loeschen
  285. ;
  286.  
  287. _extern/q delete "'TMPDIR''PCKFILE'" "'TMPDIR''PMNRFILE'" "'TMPDIR''MSGNRFILE'"
  288.  
  289. ;
  290. ;    Bei Netcall optional zusaetzliche Nodes in Liste aufnehmen
  291. ;
  292.  
  293. _if {STREET} != "@NETCALL" then _goto NONODES    ; @Netcall ? Nein, verzw.
  294. _check file "'TBOXDIR''{NAME}'.NODES" NONODES    ; Wenn File nicht vorhanden, verzw.
  295. _fastnet getfile "'TBOXDIR''{NAME}'.NODES"    ; Nodes in Nodeliste aufnehmen
  296. NONODES:
  297.  
  298. ;
  299. ;    Wenn Debug-Modus aktiv, empfangenes Pointfile retten
  300. ;
  301.  
  302. _if DEBUG == "ON" then _extern/q copy "'TMPDIR''RECFILE'" "'DEBUGDIR''{NAME}''{CALLNR}'.LHA"
  303.  
  304. ;
  305. ;    Wenn Port IMPORT existiert, Import-Event starten
  306. ;
  307.  
  308. _check port "'IMPORTPORT'" IMPORT        ; Wenn kein Port, verzw.
  309. _extern/q copy "'TMPDIR''RECFILE'" "'IMPORTFILE'"
  310. _add event/Background "'IMPORTPORT'" 0 3 mbbatch:zconnect_import "'{NAME}'"
  311. _goto END                    ; -> Ende
  312.  
  313. ;
  314. ;    Wenn kein Port, alle Messages, Files und PMs sofort importieren
  315. ;
  316. IMPORT:
  317. _extern/q 'UPACKER'
  318. _extern/q delete "'TMPDIR''RECFILE'"
  319. _extern/q list >"t:zc1'{port}'" "'TMPDIR'" lformat "zconnect getfile'OP_GET' *"%s%s*" 'DOMAIN'"
  320. _extern/q echo >"t:zc2'{port}'"
  321. _extern/q sort "t:zc1'{port}'" to "t:zc2'{port}'"
  322. _disk execute "t:zc2'{port}'"
  323. _extern/q delete "t:zc1'{port}'" "t:zc2'{port}'"
  324.  
  325. ;
  326. ;    Alle temporaer erzeugten Files loeschen
  327. ;
  328. ERROR:                        ; Fehler / Ende
  329. END:
  330. _if TMPDIR != "" then _extern/q delete "'TMPDIR'#?" ; Disk aufraeumen
  331. _logout/f                    ; Logout
  332.